﻿using Credinka.Ayni.SEA.EN;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace Credinka.Ayni.SEA.AD
{
    public class adOficina : adGeneral
    {
        public adOficina(SqlConnection con)
        {
            conexion = con;
            conexionGeneral = con;
        }

        public List<enOficina> fListarOficinaPorUsuario(int pIdUsuario)
        {
            List<enOficina> loenOficina = null;
            SqlCommand cmd = new SqlCommand("sGEN_ListarOficinaUsuario", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@pIdUsuario", SqlDbType.Int).Value = pIdUsuario;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_IdOficina = drd.GetOrdinal("iIdOficina");
                int pos_Nombre = drd.GetOrdinal("vNombreOficina");
                int pos_CodigoOficina = drd.GetOrdinal("vCodigoOficina");
                int pos_CodigoEstado = drd.GetOrdinal("iCodigoEstado");
                loenOficina = new List<enOficina>();
                enOficina oenOficina;
                while (drd.Read())
                {
                    oenOficina = new enOficina();
                    oenOficina.IdOficina = drd.GetInt32(pos_IdOficina);
                    oenOficina.NombreOficina = drd.GetString(pos_Nombre);
                    oenOficina.CodigoOficina = drd.GetString(pos_CodigoOficina);
                    oenOficina.CodigoEstado = drd.GetInt32(pos_CodigoEstado);
                    loenOficina.Add(oenOficina);
                }
            }
            return (loenOficina);
        }

        public enOficina fListarOficinaPorId(int pIdOficina)
        {
            enOficina oenOficina = null;
            SqlCommand cmd = new SqlCommand("sGEN_ListarOficinaPorId", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@pIdOficina", SqlDbType.Int).Value = pIdOficina;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_IdOficina = drd.GetOrdinal("iIdOficina");
                int pos_Nombre = drd.GetOrdinal("vNombreOficina");
                int pos_CodigoOficina = drd.GetOrdinal("vCodigoOficina");
                int pos_CodigoEstado = drd.GetOrdinal("iCodigoEstado");
                oenOficina = new enOficina();
                while (drd.Read())
                {
                    oenOficina.IdOficina = drd.GetInt32(pos_IdOficina);
                    oenOficina.CodigoOficina = drd.GetString(pos_CodigoOficina);
                    oenOficina.NombreOficina = drd.GetString(pos_Nombre);
                    oenOficina.CodigoEstado = drd.GetInt32(pos_CodigoEstado);
                }
            }
            return (oenOficina);
        }

        public List<enOficina> fListarZonas()
        {
            List<enOficina> loenOficina = null;
            SqlCommand cmd = new SqlCommand("sGEN_ListarZonas", conexionGeneral);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
            if (drd != null)
            {
                int pos_CodigoZona = drd.GetOrdinal("iCodigoZona");
                int pos_Zona = drd.GetOrdinal("Zona");
                loenOficina = new List<enOficina>();
                enOficina oenOficina;
                while (drd.Read())
                {
                    oenOficina = new enOficina();
                    oenOficina.CodigoZona = drd.GetInt32(pos_CodigoZona);
                    oenOficina.Zona = drd.GetString(pos_Zona);
                    loenOficina.Add(oenOficina);
                }
            }
            return (loenOficina);
        }

        public List<enOficina> fListarOficinas(int IdProductoTasa)
        {
            List<enOficina> loenOficina = null;
            SqlCommand cmd = new SqlCommand("sGEN_ListarOficinasPorZona", conexionGeneral);
            cmd.Parameters.Add("@piiCodigoProductoTasa", SqlDbType.Int).Value = Convert.ToInt32(IdProductoTasa);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
            if (drd != null)
            {
                int pos_IdOficina = drd.GetOrdinal("iIdOficina");
                //int pos_IdProductoTasaOficina = drd.GetOrdinal("iIdSubProductoTasaOficina");
                int pos_IdZona = drd.GetOrdinal("iCodigoZona");
                int pos_CodigoOficina = drd.GetOrdinal("vCodigoOficina");
                int pos_NombreOficina = drd.GetOrdinal("vNombreOficina");
                int pos_Departamento = drd.GetOrdinal("vDepartamento");
                int pos_Provincia = drd.GetOrdinal("vProvincia");
                int pos_Distrito = drd.GetOrdinal("vDistrito");
                int pos_CodigoEstado = drd.GetOrdinal("iCodigoEstado");
                int pos_Eliminado = drd.GetOrdinal("bEliminado");
                int pos_AudNombreUsuarioCreacion = drd.GetOrdinal("vAudNombreUsuarioCreacion");
                int pos_AudFechaCreacion = drd.GetOrdinal("dtAudFechaCreacion");
                int pos_AudIPCreacion = drd.GetOrdinal("vAudIPCreacion");
                int pos_AudMACCreacion = drd.GetOrdinal("vAudMACCreacion");
                int pos_AudNombreUsuarioModificacion = drd.GetOrdinal("vAudNombreUsuarioModificacion");
                int pos_AudFechaModificacion = drd.GetOrdinal("dtAudFechaModificacion");
                int pos_AudIPModificacion = drd.GetOrdinal("vAudIPModificacion");
                int pos_AudMACModificacion = drd.GetOrdinal("vAudMACModificacion");
                int pos_Tasa = drd.GetOrdinal("nTasa");
                int pos_Seleccion = drd.GetOrdinal("bSeleccion");
                loenOficina = new List<enOficina>();
                enOficina oenOficina;
                while (drd.Read())
                {
                    oenOficina = new enOficina();
                    oenOficina.IdOficina = drd.GetInt32(pos_IdOficina);
                    //oenOficina.IdProductoTasaOficina = drd.GetInt32(pos_IdProductoTasaOficina);
                    oenOficina.CodigoZona = drd.GetInt32(pos_IdZona);
                    oenOficina.CodigoOficina = drd.GetString(pos_CodigoOficina);
                    oenOficina.NombreOficina = drd.GetString(pos_NombreOficina);
                    oenOficina.Departamento = drd.GetString(pos_Departamento);
                    oenOficina.Provincia = drd.GetString(pos_Provincia);
                    oenOficina.Distrito = drd.GetString(pos_Distrito);
                    oenOficina.CodigoEstado = drd.GetInt32(pos_CodigoEstado);
                    oenOficina.Eliminado = drd.GetBoolean(pos_Eliminado);
                    oenOficina.AudNombreUsuarioCreacion = drd.GetString(pos_AudNombreUsuarioCreacion);
                    oenOficina.AudFechaCreacion = drd.GetDateTime(pos_AudFechaCreacion);
                    oenOficina.AudIPCreacion = drd.GetString(pos_AudIPCreacion);
                    oenOficina.AudMACCreacion = drd.GetString(pos_AudMACCreacion);
                    oenOficina.AudNombreUsuarioModificacion = (drd.IsDBNull(pos_AudNombreUsuarioModificacion) ? "" : drd.GetString(pos_AudNombreUsuarioModificacion));
                    oenOficina.AudFechaModificacion = (drd.IsDBNull(pos_AudFechaModificacion) ? new DateTime(1900, 01, 01) : drd.GetDateTime(pos_AudFechaModificacion));
                    oenOficina.AudIPModificacion = (drd.IsDBNull(pos_AudIPModificacion) ? "" : drd.GetString(pos_AudIPModificacion));
                    oenOficina.AudMACModificacion = (drd.IsDBNull(pos_AudMACModificacion) ? "" : drd.GetString(pos_AudMACModificacion));
                    oenOficina.Tasa = drd.GetDecimal(pos_Tasa);
                    oenOficina.Seleccion = drd.GetString(pos_Seleccion);
                    loenOficina.Add(oenOficina);
                }
            }
            return (loenOficina);
        }
    }
}
